﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Librerias;

namespace eCampus
{
    /// <summary>
    /// Formulario para visualizar los usuarios
    /// </summary>
    public partial class FormUsuarioConsultar : Form
    {
        #region variables
        /// <summary>
        /// Variables
        /// </summary>
        bool busqueda = false;
        int numeroEntradas = 0;
        #endregion

        #region constructores
        /// <summary>
        /// Constructor por defecto
        /// </summary>

        public FormUsuarioConsultar()
        {
            InitializeComponent();
            RellenarDatagrid(true);//primera vez que se ejecuta
            cbFiltro.SelectedIndex = 0;
        }

        #endregion

        #region Evento btNuevo_Click
        public void btNuevo_Click(object sender, EventArgs e)
        {
            FormUsuarioCrear f = new FormUsuarioCrear();
            f.ShowDialog();
            btBusquedaSimple.PerformClick();
        }
        #endregion

        #region RellenarDatagrid
        /// <summary>
    /// Se encarga de rellenar datagrid con los datos de la base de datos
    /// </summary>
    /// <param name="primera">Valor false para no pintar varias veces la columna eliminar</param>
        private void RellenarDatagrid(bool primera = false)
        {
            numeroEntradas++;
            //dgvUsuarios.DataSource = null;
            ENUsuario u = new ENUsuario();
            DataSet DS = new DataSet();


            //Intentamos

            if (busqueda)
            {
                dgvUsuarios.DataSource = u.ConsultaUsuario(tbBuscar.Text, cbFiltro.SelectedIndex);
            }
            else
            {
                dgvUsuarios.DataSource = u.ConsultaUsuario();
            }

            if (primera)
            {
                //Añade columna borrar
                DataGridViewImageColumn ColEliminar = new DataGridViewImageColumn();
                ColEliminar.Name = "elim";
                ColEliminar.HeaderText = "¿Eliminar?";
                ColEliminar.Image = eCampus.Properties.Resources.btBorrar;
                ColEliminar.Width = 30;
                dgvUsuarios.Columns.Add(ColEliminar);
            }

            //Digo qué columnas van a estar visibles
            dgvUsuarios.Columns["usuCorreo"].Visible = true;
            dgvUsuarios.Columns["usuClave"].Visible = false;
            dgvUsuarios.Columns["usuNombre"].Visible = true;
            dgvUsuarios.Columns["usuApellido1"].Visible = true;
            dgvUsuarios.Columns["usuApellido2"].Visible = true;
            dgvUsuarios.Columns["usuCorreoAlternativo"].Visible = false;
            dgvUsuarios.Columns["usuTipo"].Visible = false;
            dgvUsuarios.Columns["usuDepto"].Visible = false;
            dgvUsuarios.Columns["usuTelefono"].Visible = true;
            dgvUsuarios.Columns["usuImagen"].Visible = false;

            //TEXTO DE LA CABECERA DE LAS COLUMNAS
            dgvUsuarios.Columns["usuCorreo"].HeaderText = "Usuario";
            dgvUsuarios.Columns["usuNombre"].HeaderText = "Nombre";
            dgvUsuarios.Columns["usuApellido1"].HeaderText = "Apellido 1";
            dgvUsuarios.Columns["usuApellido2"].HeaderText = "Apellido 2";
            dgvUsuarios.Columns["usuTipo"].HeaderText = "Tipo Usuario";
            dgvUsuarios.Columns["usuTelefono"].HeaderText = "Telefono";
           
            dgvUsuarios.Columns["usuCorreo"].AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill;
            dgvUsuarios.AlternatingRowsDefaultCellStyle.BackColor = Color.LightGoldenrodYellow;
        }


        #endregion

        #region BusquedaSimple
        /// <summary>
      /// Boton que realiza la busqueda simple
      /// </summary>
      /// <param name="sender">btBusquedaSimple</param>
      /// <param name="e">evento_Click </param>
        private void btBusquedaSimple_Click(object sender, EventArgs e)
        {
            busqueda = true;
            //btRestablecer.Visible = true;
            RellenarDatagrid();
        }
#endregion

        #region CellDoubleClick 
        /// <summary>
        /// Doble clic en la celda para modificarla
        /// </summary>
        /// <param name="sender">datagridview</param>
        /// <param name="e">Evento CellDoubleClick </param>
        private void dgvUsuarios_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            int mod = 1;
            if (e.RowIndex >= 0)
            {
                ENUsuario u = new ENUsuario(dgvUsuarios["usuCorreo",e.RowIndex].Value.ToString(),
                                           dgvUsuarios["usuClave", e.RowIndex].Value.ToString(),                                                             
                                           dgvUsuarios["usuNombre", e.RowIndex].Value.ToString(),
                                           dgvUsuarios["usuApellido1", e.RowIndex].Value.ToString(),
                                           dgvUsuarios["usuApellido2", e.RowIndex].Value.ToString(),
                                           dgvUsuarios["usuDepto", e.RowIndex].Value.ToString(),
                                           dgvUsuarios["usuImagen", e.RowIndex].Value.ToString(),
                                           int.Parse( dgvUsuarios["usuTipo", e.RowIndex].Value.ToString()),
                                           dgvUsuarios["usuTelefono", e.RowIndex].Value.ToString(),
                                           dgvUsuarios["usuCorreoAlternativo", e.RowIndex].Value.ToString());
                                                              
                                                               
                                                                 
                                                                

                FormUsuarioCrear n = new FormUsuarioCrear(u,mod);
                n.ShowDialog();
                RellenarDatagrid();
                

            }
            
        }
        #endregion

        #region Load
        /// <summary>
        /// Se ejecuta cuando se carga el formulario
        /// </summary>
        /// <param name="sender">FormUsuarioConsultar</param>
        /// <param name="e">Load</param>
        private void FormUsuarioConsultar_Load(object sender, EventArgs e)
        {
            RellenarDatagrid();

        }
        #endregion

        #region CellContentClick
        /// <summary>
        /// Click en contenido de una celda para eliminar
        /// </summary>
        /// <param name="sender">dgvUsuarios</param>
        /// <param name="e">_CellContentClick</param>
        private void dgvUsuarios_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            bool esProfe = false;
            bool esAlum = false;
            ENUsuario o = new ENUsuario();
            string mail = "";
            mail = o.Correo;
          
            if (e.RowIndex >= 0 && e.ColumnIndex == dgvUsuarios.Columns["elim"].Index)
            {
                     o.Correo = dgvUsuarios.CurrentRow.Cells["usuCorreo"].Value.ToString();
                     esAlum = o.BuscarCorreoCursar(o.Correo);
                     esProfe = o.BuscarCorreoTurno(o.Correo);
                            if (esAlum)
                            {
                                MessageBox.Show("No se puede borrar. El alumno tiene asignaturas asignados");
                            }
                            else
                            {
                             if (esProfe)
                              {
                                  MessageBox.Show("No se puede borrar. El profesor tiene turnos asignados");
                              }
                             if (!esAlum && !esProfe)//borramos
                             {
                                 if (MessageBox.Show("¿Desea eliminar permanentemente el usuario \"" + dgvUsuarios["usuCorreo", e.RowIndex].Value.ToString() + "\"?", "Eliminar usuario", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation, MessageBoxDefaultButton.Button2) == DialogResult.Yes)
                                 {

                                     o.BorrarUsuario();

                                     RellenarDatagrid();
                                 }

                             }
                         }   

                }


        }
        #endregion

        #region BusquedaSimple
        /// <summary>
       /// Busqueda simple
       /// </summary>
        /// <param name="sender">btTodosUsuarios</param>
        /// <param name="e">Click_1</param>

        private void btTodosUsuarios_Click_1(object sender, EventArgs e)
        {
            busqueda = false;
            tbBuscar.Text = "";
            cbFiltro.SelectedIndex = 0;

        }
        #endregion


    }

    }

